using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; //第一步:引入命名空间 namespace Work { internal class _13Work05 { //⑤:新增一条检查项目信息。 static void Main(string[] args) { //第二步:定义连接字符串 string strConn = "Server=.;DataBase=Hospital;User ID=sa;Pwd=123456789"; //第三步:创建连接对象 SqlConnection conn = new SqlConnection(strConn); //第四步:打开连接 conn.Open(); //第五步:创建执行对象 StringBuilder sb = new StringBuilder(); Console.WriteLine("请输入项目名称和价格:"); sb.AppendLine("insert into CheckItem(CheckItemName,CheckItemCost) values({Console.Read();},{Console.Read();})"); SqlCommand comm = new SqlCommand(sb.ToString(), conn); //第六步:执行并返回结果集 //第七步:处理 int count = comm.ExecuteNonQuery(); if (count > 0) { Console.WriteLine("新增成功"); } else { Console.WriteLine("新增失败"); } //第八步:关闭连接 conn.Close(); Console.Read(); } } },帮我看看问题错在哪
时间: 2024-01-25 09:01:49 浏览: 88
这段代码中有几个问题:
1. 插入语句中的值需要使用单引号括起来,例如:`insert into CheckItem(CheckItemName,CheckItemCost) values('项目名称',100)`。
2. `Console.Read()` 方法只会读取一个字符,而不是整个字符串。应该使用 `Console.ReadLine()` 方法来读取整个字符串。
3. 在拼接 SQL 语句时,应该避免使用字符串拼接,因为这样容易引起 SQL 注入攻击。可以使用参数化查询来代替字符串拼接。
下面是修改后的代码:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
namespace Work
{
internal class _13Work05
{
//⑤:新增一条检查项目信息。
static void Main(string[] args)
{
//第二步:定义连接字符串
string strConn = "Server=.;DataBase=Hospital;User ID=sa;Pwd=123456789";
//第三步:创建连接对象
SqlConnection conn = new SqlConnection(strConn);
//第四步:打开连接
conn.Open();
//第五步:创建执行对象
Console.WriteLine("请输入项目名称和价格:");
string itemName = Console.ReadLine();
decimal itemCost = decimal.Parse(Console.ReadLine());
string sql = "insert into CheckItem(CheckItemName,CheckItemCost) values(@itemName, @itemCost)";
SqlCommand comm = new SqlCommand(sql, conn);
comm.Parameters.AddWithValue("@itemName", itemName);
comm.Parameters.AddWithValue("@itemCost", itemCost);
//第六步:执行并返回结果集
//第七步:处理
int count = comm.ExecuteNonQuery();
if (count > 0)
{
Console.WriteLine("新增成功");
}
else
{
Console.WriteLine("新增失败");
}
//第八步:关闭连接
conn.Close();
Console.Read();
}
}
}
```
注意,这里使用了 `SqlCommand.Parameters` 属性来添加参数,避免了直接拼接字符串的问题。
阅读全文