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");
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】