我试图建立一个非常基本的SQL连接(我是初学者)。 在我的SQL命令的参数中添加值时,它似乎没有获取我试图引用的值。我在这做错了什么?
代码:
namespace SQLTest3
{
public partial class Form1 : Form
{
SqlConnection myConnection = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\Waffl\\Desktop\\C#\\SQL\\SQLTest3\\SQLTest3\\sqltest3db.mdf;Integrated Security=True");
DataSet dataSet = new DataSet();
SqlDataAdapter commands = new SqlDataAdapter();
public Form1()
{
InitializeComponent();
}
private void insertBtn_Click(object sender, EventArgs e)
{
string userInput = userBox.Text.ToString();
string passInput = passBox.Text.ToString();
commands.InsertCommand = new SqlCommand("INSERT INTO Accounts (userName, password) VALUES (@user, @pass)", myConnection);
commands.InsertCommand.Parameters.Add("@user", SqlDbType.VarChar).Value = userInput;
commands.InsertCommand.Parameters.Add("@pass", SqlDbType.VarChar).Value = passInput;
if (userInput != "" && passInput != "")
{
try
{
myConnection.Open();
commands.InsertCommand.ExecuteNonQuery();
MessageBox.Show("Account created!");
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
myConnection.Close();
}
}
else
{
MessageBox.Show("Please enter a username&password.");
}
这是我似乎得到的错误:
System.Data.SqlClient.SqlException:'无法将值NULL插入列' Id',table' C:\ USERS \ WAFFL \ DESKTOP \ C#\ SQL \ SQLTEST3 \ SQLTEST3 \ SQLTEST3DB.MDF.dbo.Accounts&#39 ;;列不允许空值。 INSERT失败。 该声明已被终止。'
为什么不是@user& @pass参数等于userInput和passInput?
答案 0 :(得分:0)
你有2个元素
1
string userInput = userBox.Text.ToString();
string passInput = passBox.Text.ToString();
“为什么@user& @pass参数不等于userInput和passInput?”
你最后不需要ToString(),它已经是一个字符串。
2
你的错误很清楚。
'Cannot insert the value NULL into column 'Id'
您已经定义了一个列ID,该ID不能为空,但也不是自填充的,因此您无法保存数据,因为它不符合条件。
答案 1 :(得分:0)