C# 用insert into向SQL Server添加一行数据时语法出错,求助!

在textbox输入纯数字时通过,但是只要出现字符或汉字,编译会出错,为什么呢?代码如下,本人菜鸟,请详解一下症结所在,谢谢指教!namespacetest2{publi... 在textbox输入纯数字时通过,但是只要出现字符或汉字,编译会出错,为什么呢?
代码如下,本人菜鸟,请详解一下症结所在,谢谢指教!

namespace test2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SqlConnection conn = new SqlConnection("Data Source=SQLofVE;Initial Catalog=HIV;Integrated Security=True");
private void GetDataGridView()
{
string sql = "select * from tb_User";
dataGridView1.Columns.Clear();
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
DataTable table = new DataTable();
sda.Fill(table);
dataGridView1.DataSource = table;
}

private void Form1_Load(object sender, EventArgs e)
{
GetDataGridView();
}
private void btn_add_Click(object sender, EventArgs e)
{
string sql = string.Format("insert into tb_User (UserID,UserName,PassWord) VALUES ({0}, {1},{2})", Convert.ToInt16(tb_ID.Text), tb_Name.Text, tb_Psw.Text); //数字可以通过,为何加字母就出错?
SqlCommand scmd = new SqlCommand(sql, conn);
conn.Open();
try
{

int num = scmd.ExecuteNonQuery();
if (num > 0)
{
GetDataGridView();
}
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
conn.Close();
}
}
}
SQL中UserName和PassWord类型都是 verchar(50)

如果把
string sql = string.Format("insert into tb_User ([UserID],[UserName],[PassWord]) VALUES ({0}, {1},{2})", Convert.ToInt16(tb_ID.Text), tb_Name.Text, tb_Psw.Text);
直接结出string字符串就没问题
string sql = string.Format("insert into tb_User (UserID,UserName,PassWord) VALUES ('3', 'fgfffgfgfg', 'gfgfgfggfgfgfgh')");
这样能通过,但是在textbox中输入字母就不行
展开
 我来答
lybgl
2015-12-08 · TA获得超过290个赞
知道小有建树答主
回答量:903
采纳率:86%
帮助的人:234万
展开全部
加单引号就行,用户名和密码加单引号
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式