我使用SQLite的工作是第一次,現在當我想要的東西添加到數據庫,它拋出一個錯誤說:我能做些什麼來解決我的SQLite的連接字符串
「無效ConnectionString的格式,不能解析:字符串值分割不能爲空」
這裏是我到目前爲止的代碼爲這個(我從一個教程工作):
String dbConnection;
/// <summary>
/// Default Constructor for SQLiteDatabase Class.
/// </summary>
public void SQLiteDatabase()
{
dbConnection = "Data Source = StockDB.s3db; Version = 3;";
}
public int ExecuteNonQuery(string sql)
{
SQLiteConnection cnn = new SQLiteConnection(dbConnection);
cnn.Open(); //error thrown here
SQLiteCommand mycommand = new SQLiteCommand(cnn);
mycommand.CommandText = sql;
int rowsUpdated = mycommand.ExecuteNonQuery();
cnn.Close();
return rowsUpdated;
}
我不知道,如果你需要的代碼,SQL查詢但是:
DBHelper db = new DBHelper();
UserInfo UI = new UserInfo();
UI.UserName = "henry";
UI.Code = 123;
UI.Role = "LEADER";
string sql = "INSERT INTO User (Username, Code, Role)" +
"VALUES (" + UI.UserName + "" + UI.Code.ToString() + "" + UI.Role + ")";
db.ExecuteNonQuery(sql);
我不知道如何解決這個問題。我可以從數據庫中讀取沒有問題。
額外的信息:
namespace Stock_A_Lot
{
public class DBHelper
{
String dbConnection;
/// <summary>
/// Default Constructor for SQLiteDatabase Class.
/// </summary>
public void SQLiteDatabase()
{
dbConnection = "Data Source = StockDB.s3db; Version = 3;";
}
public DataTable GetDataTable(string sql)
{
DataTable dt = new DataTable();
try
{
SQLiteConnection cnn = new SQLiteConnection(dbConnection);
cnn.Open();
SQLiteCommand mycommand = new SQLiteCommand(cnn);
mycommand.CommandText = sql;
SQLiteDataReader reader = mycommand.ExecuteReader();
dt.Load(reader);
reader.Close();
cnn.Close();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
return dt;
}
/// <summary>
/// Allows the programmer to interact with the database for purposes other than a query.
/// </summary>
/// <param name="sql">The SQL to be run.</param>
/// <returns>An Integer containing the number of rows updated.</returns>
public int ExecuteNonQuery(string sql)
{
SQLiteConnection cnn = new SQLiteConnection(dbConnection);
cnn.Open();
SQLiteCommand mycommand = new SQLiteCommand(cnn);
mycommand.CommandText = sql;
int rowsUpdated = mycommand.ExecuteNonQuery();
cnn.Close();
return rowsUpdated;
}
/// <summary>
/// Allows the programmer to retrieve single items from the DB.
/// </summary>
/// <param name="sql">The query to run.</param>
/// <returns>A string.</returns>
public string ExecuteScalar(string sql)
{
SQLiteConnection cnn = new SQLiteConnection(dbConnection);
cnn.Open();
SQLiteCommand mycommand = new SQLiteCommand(cnn);
mycommand.CommandText = sql;
object value = mycommand.ExecuteScalar();
cnn.Close();
if (value != null)
{
return value.ToString();
}
return "";
}
/// <summary>
/// Allows the programmer to easily insert into the DB
/// </summary>
/// <param name="tableName">The table into which we insert the data.</param>
/// <param name="data">A dictionary containing the column names and data for the insert.</param>
/// <returns>A boolean true or false to signify success or failure.</returns>
public bool Insert(String tableName, Dictionary<String, String> data)
{
String columns = "";
String values = "";
Boolean returnCode = true;
foreach (KeyValuePair<String, String> val in data)
{
columns += String.Format(" {0},", val.Key.ToString());
values += String.Format(" '{0}',", val.Value);
}
columns = columns.Substring(0, columns.Length - 1);
values = values.Substring(0, values.Length - 1);
try
{
this.ExecuteNonQuery(String.Format("insert into {0}({1}) values({2});", tableName, columns, values));
}
catch (Exception fail)
{
MessageBox.Show(fail.Message);
returnCode = false;
}
return returnCode;
}
}
}
大概類是一個名爲DBHelper在最後一個例子 – Steve
沒有值之間是暫時安全的逗號。 :-) – Steve
@Steve:你可能是對的(第一評論),儘管該方法頭部評論需要改變(或刪除):)(第二個評論)除非第一個值是被攻陷的,其餘的是評論說。這是我想到的第一件事,鮑比桌子和所有:) – David