Winform与SqlServer

首先是解决,字符串拼接引起的注入问题。将连接字符串拿到config配置文件中。

<appSettings>
<add key="Connection" value="server =.; database = db_test;uid = sa; pwd=123456;"/>
</appSettings>

private static string connectionString = ConfigurationManager.AppSettings["Connection"];

 

查询时的注入问题:

SqlConnection myConnection = new SqlConnection(connectionString);
string queryString = "select CAB_NUM from cabinet where CAB_NAME = @name ";// sql语句,值用@符号连接表示,后面用到赋值。
try
{
myConnection.Open();
SqlCommand myCommand = new SqlCommand(queryString, myConnection); // 声明SqlCommand
myCommand.Parameters.Add("@name", SqlDbType.VarChar, 50); // 因为只有一个值,所以用Add的方式,需要标注哪个值,类型以及长度。
myCommand.Parameters["@name"].Value = cabName; // 这句为了给字符串中的@name赋值。
SqlDataReader reader = myCommand.ExecuteReader(); // 执行读取,注意这地方不能用ExecuteNonQuery,ExecuteNonQuery只是用来执行删、改、增的返回变化条数。

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

reader.HasRows:判断是否有一行或者多行数据。

 

多个注入问题:

string queryString = "select * from cabinet where CAB_NUM = @num and CAB_FLOOR = @floor and CAB_AISLE= @aisle";
try
{
myConnection.Open();

SqlCommand myCommand = new SqlCommand(queryString, myConnection);
SqlParameter[] sqlParameters =
{
new SqlParameter("@num", oldNum),
new SqlParameter("@floor", oldFloor),
new SqlParameter("@aisle", oldAisle),
}; // @符后的名字,填充数值时必须一一对应。
myCommand.Parameters.AddRange(sqlParameters);
SqlDataReader ret = myCommand.ExecuteReader();

注意:这里一定要使用AddRange才能添加数组形式的SqlParameter进去

读取SqlReader中的数据:

SqlDataReader reader = selectCommand.ExecuteReader();
Console.WriteLine($"{reader.GetName(0),-10}{reader.GetName(1),-10}{reader.GetName(2)}");
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
Console.Write($"{reader.GetValue(i),-10}");
//Console.WriteLine(reader.GetName(i) + reader.GetValue(i));
}
//Console.WriteLine($"{reader.GetValue(0)}{reader.GetValue(1),-20}{reader.GetValue(2)}");
Console.WriteLine();
}

dataGridView绑定dataSet

DataSet myDataSet = new DataSet();

SqlCommand myCommand = new SqlCommand(QueryString, myConnection);
//SqlDataAdapter myAdapter = new SqlDataAdapter();
myAdapter.SelectCommand = myCommand;
myConnection.Open();
myAdapter.Fill(myDataSet, "student");

posted @   Wen_Chen  阅读(153)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示