asp语句中提取数据库数据怎么弄?

asp语句中提取数据库数据怎么弄?,第1张

分析你的问题:

要搜索在数据中查找指定

学号

,此时可能是模糊查询,也可能是完全匹配。根据你的需求,要把查到的结果集中此人的姓名赋值给abc,说明这是一个完全匹配的查找,否则就会出现多条记录,就不能单独赋值给变量abc了。

首先,查数据库:

dim

username,abc

'定义两个变量

username=trim(request.Form("username"))

'先把表单项username的值取出来并进行trim处理,同时赋值给username变量 

rs.open

"select

top

1

*

from

voteuser

where

username='"&username&"'",conn,1,1

'这里执行一条

sql语句

进行查找,为了防止重复记录,这里用了top

1限制只取1条记录

if

rs.recordcount>0

then

'这里判断是否查找到结果,即rs.rdcordcount的值是否大于0

abc=rs("truename")

'条件成立,把truename字段的赋值给变量abc

end

if

response.write

abc

'输出变量abc的值

Sqlite数据库,在很多场合已经用得比较多,由于我的代码生成工具的需要,需要把Sqlite的表、字段、视图等信息获取出来,以便实现各种数据库快速生成项目工程的 *** 作。这里就需要利用C#获取Sqlite数据库的元数据了,和其他数据库一样。

为了获取Sqlite的数据库对象数据,我做了一个测试的例子来获取他的相关信息,其实它的元数据还是和Access的 *** 作方式很接近。首先我们先通过Sqlite的数据库管理工具或者Visual Studio来打开创建一些表。

首先我们先来看看通过C#代码获取到数据库对象的 *** 作界面。

获取表的元数据界面效果如下所示,视图和这个也查不多,很有意思的一点,就是它把创建的脚本的显示出来了,呵呵。

获取的表字段信息效果如下所示。

有了这些数据,我就很方便在我的代码生成工具Database2Sharp里面实现代码生成 *** 作了。

现在我们来看看以上实现的后台代码是如何的,来了解Sqlite的数据库获取元数据的 *** 作。

string connectionString = ""

public Form1()

{

InitializeComponent()

connectionString = string.Format(@"Data Source={0}\OrderWater.dbVersion=3", Application.StartupPath)

}

private void btnGetSchema_Click(object sender, EventArgs e)

{

using (SQLiteConnection conn = new SQLiteConnection(connectionString))

{

conn.Open()

DataTable schemaTable = conn.GetSchema("TABLES")

this.dataGridView1.DataSource = schemaTable

}

}

获取表字段的 *** 作代码如下所示。

private void btnGetColumns_Click(object sender, EventArgs e)

{

using (SQLiteConnection conn = new SQLiteConnection(connectionString))

{

conn.Open()

DataTable table = conn.GetSchema("TABLES")

if (table != null &&table.Rows.Count >0)

{

string tableName = table.Rows[0]["TABLE_NAME"].ToString()

DataTable schemaTable = GetReaderSchema(tableName, conn)

this.dataGridView1.DataSource = schemaTable

}

}

}

private DataTable GetReaderSchema(string tableName, SQLiteConnection connection)

{

DataTable schemaTable = null

IDbCommand cmd = new SQLiteCommand()

cmd.CommandText = string.Format("select * from [{0}]", tableName)

cmd.Connection = connection

using (IDataReader reader = cmd.ExecuteReader(CommandBehavior.KeyInfo | CommandBehavior.SchemaOnly))

{

schemaTable = reader.GetSchemaTable()

}

return schemaTable

}

为了实现和我代码生成工具中的数据库字段信息绑定,需要通过获取设置Sqlite的属性为对应的ColumnInfo对象,如下所示。

using (SQLiteConnection conn = new SQLiteConnection(ConnectString))

{

conn.Open()

DataTable schemaTable = GetReaderSchema(tableName, conn)

foreach (DataRow dr in schemaTable.Rows)

{

ColumnInfo info = new ColumnInfo()

info.Name = new NameElement(dr["ColumnName"].ToString())

info.Ordinal = Convert.ToInt32(dr["ColumnOrdinal"].ToString())

info.AllowDBNull = (bool)dr["AllowDBNull"]

info.MaxLength = Convert.ToInt32(dr["ColumnSize"].ToString())

info.DataTypeId = Convert.ToInt32(dr["ProviderType"].ToString())

info.DataType = dr["DataTypeName"].ToString().Trim()

info.AutoIncrement = (bool)dr["IsAutoIncrement"]

info.IsPrimaryKey = (bool)dr["IsKey"]

info.Unique = (bool)dr["IsUnique"]

info.IsReadOnly = (bool)dr["IsReadOnly"]

string netType = dr["DataType"].ToString()

list.Add(info.Name.Name.ToString(), info)

}

conn.Close()

}

代码生成工具中,这些数据库的元数据实体类信息是可以提供访问的,方便我们定制代码生成工具的模板,代码生成工具关于这些数据库对象的帮助如下所示。

这样,在代码生成工具中,就可以利用Sqlite的数据库对象数据,来生成和Oracle数据库、SqlServer数据库、Access数据库、MySql等数据库一样的项目工程代码了,获取甚至可以在自定义的模板代码模块中,添加自己的处理逻辑。

快速生成的代码如下所示。

本文通过介绍获取Sqlite的数据库元数据库,并在代码生成工具中的应用为例,给大家提供一个使用元数据进行程序开发的一个思路,希望大家可以同这种方式实现更多自定义模板或者逻辑的引用。

1、打开源数据文件,把首行中的对应的数据,复制行到空白位置。

2、选中J2单元格,单击编辑栏中的"插入函数“,如图示。

3、d出”插入函数“对话框,设置其类别为”逻辑“,并选择列表框中的IF选项。然后确定。

4、在d出的”函数参数“对话框中,设置Logical_test参数为”I2=“”,将Value_if_true设置为“”,即空白内容。

将Value_if_false参数框中输入“VLOOKUP(I2,A2:B2846,2),然后确定。

5、选中J2单元格,注意是J2,不是I2哦.(I2是输入证券代码的地方),鼠标移动到单元格右下角,出现十字光标时,按住鼠标左键向右拖动到O2单元格。如图

6、这个时候会发现原来源数据中的C2-G2单元格中的内容就会自动填充到K2-O2单元格中。这个时候,如需要的数据是按源数据中的数据从上 到下排列的,就可以不用修改了。直接重复第5步中的方法,把J2-O2每个单元格下拉填充就完成了。如图示,先把需要的数据列复制到I列中,然后依次下拉 填充。

7、但有时候,需要的不是按照源数据中的排序,比如说,现用的这个例子,如果在I3中,输入000002就会出错。如图示。

8,这是j3中的函数为VLOOKUP(I3,A3:B2847,2)),也就是搜索从A3到B2487区域中 的内容。没有包含A2,所以我们输入000002在源数据中找不到。所以使用这个方法前,要先对需要的数据按源数据进行排序。不然,是不准确的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6686551.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存