当我尝试使用名称填充textbox1
时,我收到一个异常,表明列名无效。当我用数字填充它时,它可以工作。
coach_name
的数据类型为varchar(50)
。
插入代码为:
// connection setup code
SqlConnection conn = new SqlConnection(connString);
string Coach_Name = textBox1.Text;
try {
string Password1=textBox2.Text;
string Password2=textBox3.Text;
string Password=textBox2.Text;
if (Password1.Equals(Password2))
{
SqlCommand cmd = new SqlCommand("insert into CoachLogins values (" + Coach_Name + ",'" + Password + "')", conn);
conn.Open();
cmd.ExecuteNonQuery(); // hyi insert update delete ma btekhod shi
}
答案 0 :(得分:4)
您尚未在引号中包含Coach_Name
,因此如果您将其传递给字符串,它将无效。数字值将在查询中起作用,因为它们不必用引号括起来:
SqlCommand cmd = new SqlCommand _
("insert into CoachLogins values ('" + Coach_Name + "','" + Password + "')", conn);
请阅读有关使用parameterised queries & SQL injection。
的信息另外,我知道这可能是您开发工作的早期阶段,但请使用比button1
和textBox1
更有用的内容命名控件。如果你沿着这条道路前进,它很快就会变得一团糟。
答案 1 :(得分:0)
尝试将代码改为:
点应该是封面
**using**
实现IDisposable using (SqlConnection con=new SqlConnection(MyConnectionString)) { conn.Open(); using(SqlCommand command= new SqlCommand("insert into CoachLogins (Coach_Name,Password ) values (@Coach_Name , @Password )", conn)) { command.CommandType = CommandType.Text; command.Parameters.Add("@Coach_Name", SqlDbType.NVarChar,100).Value = TextBox1.Text; command.Parameters.Add("@Password", SqlDbType.NVarChar,100).Value = TextBox2.Text; ..... cmd.ExecuteNonQuery(); con.dispose } }