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 @ 2022-08-20 15:42  Wen_Chen  阅读(167)  评论(0)    收藏  举报