C# ADO.NET 操作学习记录
1、
string conStr = "Server = LAPTOP-T9JMQGJQ; User id = sa;Pwd= ;Database=erp_data;TrustServerCertificate=True";SqlConnection conn = new SqlConnection(conStr);
SqlConnection创建与SQL server的连接,
SqlConnection conn = new SqlConnection(conStr);
Constr为连接数据库相关配置字符串,
配置字符串中的TrustServerCertificate 是数据库连接字符串中的一个关键参数,主要用于控制客户端对服务器证书的验证行为。当设置为 true 时,客户端将跳过对服务器证书的验证,直接信任服务器提供的证书;若为 false(默认值),则要求服务器证书必须由受信任的证书颁发机(CA)签发,否则连接会失败。
(1)主要应用场景
测试环境:在开发或测试环境中,若使用自签名证书或无有效CA签发的证书,可通过启用此参数绕过证书验证,快速建立加密连接
(2)解决证书链不受信任的错误:当出现“证书链由不受信任的颁发机构颁发”等错误时,添加 TrustServerCertificate=true 可临时解决问题
与加密配置配合使用:通常需同时设置 Encrypt=true 以启用TLS加密,但跳过证书验证
(3)
注意事项
安全性风险:生产环境中不建议长期启用此参数,因其会降低通信的安全性,可能引发中间人攻击
语法规范:参数名称需正确拼写为 TrustServerCertificate,大小写不敏感但建议统一格式。
2、
SqlCommand 执行SQL语句存储过程带相关参数,使用SqlCommand.Parameters.Add; 以防止SQL语句注入攻击
SqlCommand cmd = new SqlCommand();cmd.Connection = conn;cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = "PADD_TUESR";cmd.Parameters.Add("@FCODE", SqlDbType.VarChar, 6).Value = textBox1.Text;cmd.Parameters.Add("@FNAME",SqlDbType.VarChar,15).Value = textBox2.Text;
SqlCommand的常用方法说明:
ExecuteNonQuery: 用于执行非Select命令,比如INSERT\DELETE\UPDATE命令,并返回命令所影响的数据行数。
ExecuteScalar: 用于执行SELECT 查询命令,返回数据行中第一行第一列的值,通常用来执行那些用到Count或SUM函数的SELECT命令。
ExecuteReader:执行SELECT 命令,并返回一个DataReader对象,这个DataReader对象是一个只读向前的数据集。
3、DataReader对象是一个简单的数据集,他主要用于从数据源中读取数据,常用于检索大量数据。
**注意:**使用DataReader对象读取数据时,必须一直保持与数据的连接,所以也被称为连线模式。使用DatatReader对象读取数据之后,务必将其关闭,否则其所使用的Connection对象将无法再执行其它操作。
HasRows属性判断数据库中是否有数据。
FiledCount 获取当前行的列数。
Read 方法使DataReader对象前进到下一条记录。
SqlDataReader reader = cmdR.ExecuteReader();if (reader.HasRows){while (reader.Read()){richTextBox1.Text += "" + reader["FCODE"] + reader["FNAME"]+"\n";}}
using System.Data.SqlClient;
private void button1_Click(object sender, EventArgs e)
{string conStr = "Server = LAPTOP-T9JMQGJQ; User id = sa;Pwd= ;Database=erp_data;TrustServerCertificate=True";SqlConnection conn = new SqlConnection(conStr);SqlCommand cmd = new SqlCommand();cmd.Connection = conn;cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = "PADD_TUESR";cmd.Parameters.Add("@FCODE", SqlDbType.VarChar, 6).Value = textBox1.Text;cmd.Parameters.Add("@FNAME",SqlDbType.VarChar,15).Value = textBox2.Text;if (conn.State == ConnectionState.Closed){conn.Open();}if (Convert.ToInt32(cmd.ExecuteNonQuery()) > 0){label1.Text = "添加成功";}else{label1.Text = "添加失败";}conn.Close();SqlCommand cmdR = new SqlCommand();cmdR.Connection = conn;cmdR.CommandType = CommandType.Text;cmdR.CommandText = "SELECT * FROM TUSER";if(conn.State == ConnectionState.Closed){conn.Open();}SqlDataReader reader = cmdR.ExecuteReader();if (reader.HasRows){while (reader.Read()){richTextBox1.Text += "" + reader["FCODE"] + reader["FNAME"]+"\n";}}reader.Close();conn.Close();SqlConnection sqlcon = new SqlConnection("server = LAPTOP-T9JMQGJQ; user id = sa; pwd=;Database = erp_data;TrustServerCertificate=True");sqlcon.Open();SqlDataAdapter sqlda = new SqlDataAdapter("SelecT * FROM TUSER",sqlcon);DataSet myds = new DataSet();sqlda.Fill(myds,"TUSER");
}