目录
1、ExecuteNonQuery插入SQL数据
2、ExecuteScalar查询SQL语句
3、插入数据后,查询 ID,获得自增字段的值
4、ExecuteReader执行查询
总结:
(1)数据类型对应
(2)sqlserver数据库字段出现空格字符问题
测试程序下载连接:
1、ExecuteNonQuery插入SQL数据 (using用完以后自动释放,而使用close或者Dispose这些在出现异常得时候不会释放内存资源导致数据库越来越慢)
private void btnInsert_Click(object sender, EventArgs e)
{
try
{
//SqlConnection为建立和数据库连接得对象
using (SqlConnection conn = new SqlConnection("Data Source=127.0.0.1;
Initial Catalog=MyTest;
User=sa;
Password=54085408"))
{
conn.Open();
//打开连接
//通过连接创建一个向数据数据库发送命令(Command)得对象SqlCommand
using (SqlCommand cmd = conn.CreateCommand())
{
//CommandText为要执行得sql语句
cmd.CommandText = "insert into tbl_student(Name,Age,Comment) output inserted.ID values('Li',20,'WoMan')";
//ExecuteNonQuery一般用来执行UpDate、Delete、Insert、语句
cmd.ExecuteNonQuery();
//执行
}
}
MessageBox.Show("执行完成");
}
catch
{}
}
2、ExecuteScalar查询SQL语句
private void btnFind_Click(object sender, EventArgs e)
{
try
{
//SqlConnection为建立和数据库连接得对象
using (SqlConnection conn = new SqlConnection("Data Source=127.0.0.1;
Initial Catalog=MyTest;
User=sa;
Password=54085408"))
{
conn.Open();
//打开连接
//通过连接创建一个向数据数据库发送命令(Command)得对象SqlCommand
using (SqlCommand cmd = conn.CreateCommand())
{
//CommandText为要执行得sql语句
cmd.CommandText = "select count(*) from tbl_student where Age<100";
//object obj = cmd.ExecuteScalar();
//ExecuteScalar一般用来执行有且只有一行一列返回值的SQL语句
int i = (int)cmd.ExecuteScalar();
MessageBox.Show("Age<100的数据共:" + i.ToString() + "行数据");
}
}
MessageBox.Show("执行完成");
}
catch { }
}
查询结果
文章图片
3、插入数据后,查询 ID,获得自增字段的值 之所以不用 select MAX(ID) from tbl_student,是因为在大型的项目中,可能会有很多数据实时的插入进来,从而导致获取的数据并不是最大的。
private void btnSelectCount_Click(object sender, EventArgs e)
{
try
{
//SqlConnection为建立和数据库连接得对象
using (SqlConnection conn = new SqlConnection("Data Source=127.0.0.1;
Initial Catalog=MyTest;
User=sa;
Password=54085408"))
{
conn.Open();
//打开连接
//通过连接创建一个向数据数据库发送命令(Command)得对象SqlCommand
using (SqlCommand cmd = conn.CreateCommand())
{
//CommandText为要执行得sql语句
cmd.CommandText = "insert into tbl_student(Name,Age) output inserted.ID values('Li',123)";
//object obj = cmd.ExecuteScalar();
//ExecuteScalar一般用来执行有且只有一行一列返回值的SQL语句
long i = (long)cmd.ExecuteScalar();
MessageBox.Show("当前插入数据共:" + i.ToString() + "行");
}
}
MessageBox.Show("执行完成");
}
catch { }
}
提示:insert into tbl_student(Name,Age) output inserted.ID values('Li',123) 的数据库语句,可用来查询数据库表中数据总数。
4、ExecuteReader执行查询 (1)ExecuteReader()用来执行一条查询结果为表值结果集的select语句 ,它返回一个SqlDataReader类型的对象。
(2)SqlDataReader不直接存储数据,它只是一个指挥棒,它的作用与foreach那个指针非常类似。
(3)SqlDataReader只能从前往后读,不能往回退。由于数据并不是真正读到了.NET程序的内存空间里,所有,通过SqlDataReader读取数据时必须保证SqlDataReader对象一直处于连接状态。
(4)另外,SqlDataReader只能读取数据,不能修改数据
private void btnSqlDataRead_Click(object sender, EventArgs e)
{
try
{
//SqlConnection为建立和数据库连接得对象
using (SqlConnection conn = new SqlConnection("Data Source=127.0.0.1;
Initial Catalog=MyTest;
User=sa;
Password=54085408"))
{
conn.Open();
//打开连接
//通过连接创建一个向数据数据库发送命令(Command)得对象SqlCommand
using (SqlCommand cmd = conn.CreateCommand())
{
//CommandText为要执行得sql语句
cmd.CommandText = "select * from tbl_student where Age<100";
using(SqlDataReader rd=cmd.ExecuteReader())
{
while(rd.Read())
{
string name = rd.GetString(1);
//1表示数据表的第一列
int age = rd.GetInt32(2);
//2表示数据表的第二列
string comment = rd.GetString(3);
//3表示数据表的第三列
MessageBox.Show(name + "," + age.ToString() + "," + comment);
}
}
}
}
}
catch { }}
运行结果
文章图片
总结: (1)ExecuteNonQuery一般用来执行UpDate、Delete、Insert、语句
(2)ExecuteScalar一般用来执行有且只有一行一列返回值的SQL语句
(1)数据类型对应
SQLC#
intint
bigintlong(长int)
nvarcharstring
【C#|C#数据库教程2-ADO.NET常用SQL语句】bit(0,1)bool
(2)sqlserver数据库字段出现空格字符问题
SQL 中定义:
char: 固定长度,存储ANSI字符,不足的补英文半角空格。
nchar: 固定长度,存储Unicode字符,不足的补英文半角空格
varchar: 可变长度,存储ANSI字符,根据数据长度自动变化。
nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化。
解决方案:
业务中字符主键类建议优先使用varchar,nvarchar。
如使用char,查询语句中最好trim下,防止业务中出现不必要的错误。
测试程序下载连接: https://download.csdn.net/download/panjinliang066333/85143537
创作不易,请多多支持
文章图片
推荐阅读
- C#|C#数据库教程1-使用ADO.NET操作sql server 2012
- C#|C# Udp测试工具开发
- ADO.NET|C# Access数据库使用
- SQLServer 2008数据库查看死锁堵塞的SQL语句
- #|c++中的四种类型转换
- 课设|数据库课设之学生成绩管理系统
- 人工智能|高考作文(如何下好“数据治理”这盘大棋())
- C#|C#免注册调用大漠插件
- C#上位机|C#上位机基础知识